home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / 3dTruchet.scm < prev    next >
Text File  |  2009-12-15  |  8KB  |  240 lines

  1. ; GIMP - The GNU Image Manipulation Program
  2. ; Copyright (C) 1995 Spencer Kimball and Peter Mattis
  3. ;
  4. ; This program is free software; you can redistribute it and/or modify
  5. ; it under the terms of the GNU General Public License as published by
  6. ; the Free Software Foundation; either version 2 of the License, or
  7. ; (at your option) any later version.
  8. ;
  9. ; This program is distributed in the hope that it will be useful,
  10. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ; GNU General Public License for more details.
  13. ;
  14. ; You should have received a copy of the GNU General Public License
  15. ; along with this program; if not, write to the Free Software
  16. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. ;
  18. ;    3dTruchet  - a script to create Truchet patterns
  19. ;                 by Adrian Likins <aklikins@eos.ncsu.edu>
  20. ;                 http://www4.ncsu.edu/~aklikins/
  21. ;    version about .8 give or take
  22. ;
  23. ;  Lots of thanks to Quartic for his help.
  24. ;
  25. ;
  26. ;         The utility of this script is left as an exercise for the reader.
  27.  
  28. (define (center-ellipse img
  29.                         cx
  30.                         cy
  31.                         rx
  32.                         ry
  33.                         op
  34.                         aa
  35.                         feather
  36.                         frad)
  37.   (gimp-ellipse-select img (- cx rx) (- cy ry) (+ rx rx) (+ ry ry)
  38.                        op aa feather frad)
  39. )
  40.  
  41. (define (use-tile img
  42.                   drawable
  43.                   height
  44.                   width
  45.                   img2
  46.                   drawable2
  47.                   xoffset
  48.                   yoffset)
  49.   (gimp-edit-copy drawable2)
  50.   (let (
  51.        (floating-sel (car (gimp-edit-paste drawable FALSE)))
  52.        )
  53.     (gimp-layer-set-offsets floating-sel xoffset yoffset)
  54.     (gimp-floating-sel-anchor floating-sel)
  55.   )
  56. )
  57.  
  58.  
  59. (define (create-tile img
  60.                      drawable1
  61.                      drawable2
  62.                      size
  63.                      thickness
  64.                      backcolor
  65.                      begincolor
  66.                      endcolor
  67.                      supersample)
  68.   (let* (
  69.         (half-thickness (/ thickness 2))
  70.         (outer-radius (+ (/ size 2) half-thickness))
  71.         (inner-radius (- (/ size 2) half-thickness))
  72.         )
  73.  
  74.     (gimp-selection-all img)
  75.     (gimp-context-set-background backcolor)
  76.     (gimp-edit-fill drawable1 BACKGROUND-FILL)
  77.  
  78.     (let* (
  79.           (tempSize (* size 3))
  80.           (temp-img (car (gimp-image-new tempSize tempSize RGB)))
  81.           (temp-draw (car (gimp-layer-new temp-img tempSize tempSize
  82.                                           RGB-IMAGE "Jabar" 100 NORMAL-MODE)))
  83.           (temp-draw2 (car (gimp-layer-new temp-img tempSize tempSize
  84.                                           RGB-IMAGE "Jabar" 100 NORMAL-MODE)))
  85.           )
  86.  
  87.       (gimp-image-undo-disable temp-img)
  88.       (gimp-image-add-layer temp-img temp-draw 0)
  89.       (gimp-image-add-layer temp-img temp-draw2 0)
  90.       (gimp-context-set-background backcolor)
  91.       (gimp-edit-fill temp-draw BACKGROUND-FILL)
  92.       (gimp-edit-fill temp-draw2 BACKGROUND-FILL)
  93.  
  94.       ;weird aint it
  95.       (gimp-context-set-background begincolor)
  96.       (gimp-context-set-foreground endcolor)
  97.  
  98.       (center-ellipse temp-img size size outer-radius outer-radius
  99.                       CHANNEL-OP-REPLACE TRUE FALSE 0)
  100.       (center-ellipse temp-img size size inner-radius inner-radius
  101.                       CHANNEL-OP-SUBTRACT TRUE FALSE 0)
  102.  
  103.       (center-ellipse temp-img (* size 2) (*  size 2)  outer-radius outer-radius
  104.                       CHANNEL-OP-ADD TRUE FALSE 0)
  105.       (center-ellipse temp-img (* size 2) (*  size 2)  inner-radius inner-radius
  106.                       CHANNEL-OP-SUBTRACT TRUE FALSE 0)
  107.  
  108.       (gimp-edit-blend temp-draw FG-BG-RGB-MODE NORMAL-MODE
  109.                        GRADIENT-SHAPEBURST-ANGULAR 100 0 REPEAT-NONE FALSE
  110.                        supersample 3 0.2 TRUE
  111.                        size size (* size 2) (/ size 2))
  112.  
  113.       (center-ellipse temp-img size (* size 2)  outer-radius outer-radius
  114.                       CHANNEL-OP-REPLACE TRUE FALSE 0)
  115.       (center-ellipse temp-img size (* size 2) inner-radius inner-radius
  116.                       CHANNEL-OP-SUBTRACT TRUE FALSE 0)
  117.  
  118.       (center-ellipse temp-img (* size 2) size  outer-radius outer-radius
  119.                       CHANNEL-OP-ADD TRUE FALSE 0)
  120.       (center-ellipse temp-img (* size 2) size  inner-radius inner-radius
  121.                       CHANNEL-OP-SUBTRACT TRUE FALSE 0)
  122.  
  123.       ;(gimp-edit-fill temp-img temp-draw2 BACKGROUND-FILL)
  124.  
  125.       (gimp-edit-blend temp-draw2 FG-BG-RGB-MODE NORMAL-MODE
  126.                        GRADIENT-SHAPEBURST-ANGULAR 100 0 REPEAT-NONE FALSE
  127.                        supersample 3 0.2 TRUE
  128.                        size size (* size 2) (* size 2))
  129.  
  130.       (gimp-selection-none temp-img)
  131.  
  132.       (gimp-image-resize temp-img size size (- size) (- size))
  133.       ; woo hoo it works....finally...
  134.  
  135.  
  136.       (gimp-selection-all temp-img)
  137.       (gimp-edit-copy temp-draw)
  138.       (let ((floating-sel (car (gimp-edit-paste drawable2 FALSE))))
  139.         (gimp-floating-sel-anchor floating-sel))
  140.  
  141.       (gimp-edit-copy temp-draw2)
  142.       (let ((floating-sel (car (gimp-edit-paste drawable1 FALSE))))
  143.         (gimp-floating-sel-anchor floating-sel))
  144.  
  145.       ;(let ((drawble (car (gimp-drawable-transform-flip-simple img drawable1
  146.       ;                     ORIENTATION-HORIZONTAL
  147.       ;                     TRUE 0 TRUE)))))
  148.  
  149.  
  150.       ;(gimp-display-new temp-img)
  151.       (gimp-image-delete temp-img)
  152.     )
  153.   )
  154. )
  155.  
  156.  
  157. (define (script-fu-3dtruchet size
  158.                              thickness
  159.                              backcolor
  160.                              begincolor
  161.                              endcolor
  162.                              supersample
  163.                              xtiles
  164.                              ytiles)
  165.   (let* (
  166.         (width (* size xtiles))
  167.         (height (* size ytiles))
  168.         (img (car (gimp-image-new width height RGB)))
  169.         (tile (car (gimp-image-new size size RGB)))
  170.         (layer-one (car (gimp-layer-new img width height
  171.                                         RGB-IMAGE "Rambis" 100 NORMAL-MODE)))
  172.         (tiledraw1 (car (gimp-layer-new tile size size
  173.                                         RGB-IMAGE "Johnson" 100 NORMAL-MODE)))
  174.         (tiledraw2 (car (gimp-layer-new tile size size
  175.                                         RGB-IMAGE "Cooper" 100 NORMAL-MODE)))
  176.         (Xindex 0)
  177.         (Yindex 0)
  178.         )
  179.  
  180.     (gimp-context-push)
  181.  
  182.     (gimp-image-undo-disable img)
  183.     (gimp-image-undo-disable tile)
  184.  
  185.     (gimp-image-add-layer img layer-one 0)
  186.     (gimp-image-add-layer tile tiledraw1 0)
  187.     (gimp-image-add-layer tile tiledraw2 0)
  188.  
  189.     ;just to look a little better
  190.     (gimp-selection-all img)
  191.     (gimp-context-set-background backcolor)
  192.     (gimp-edit-fill layer-one BACKGROUND-FILL)
  193.     (gimp-selection-none img)
  194.  
  195.     (create-tile tile tiledraw1 tiledraw2 size thickness
  196.                  backcolor begincolor endcolor supersample)
  197.  
  198.  
  199.     (while (<= Xindex xtiles)
  200.       (while (<= Yindex ytiles)
  201.         (if (= (rand 2) 0)
  202.             (use-tile img layer-one height width tile
  203.                       tiledraw1 (* Xindex size) (* Yindex size))
  204.             (use-tile img layer-one height width tile
  205.                       tiledraw2 (* Xindex size) (* Yindex size))
  206.         )
  207.         (set! Yindex (+ Yindex 1))
  208.       )
  209.       (set! Yindex 0)
  210.       (set! Xindex (+ Xindex 1))
  211.     )
  212.  
  213.     (gimp-image-delete tile)
  214.     (gimp-image-undo-enable img)
  215.     (gimp-display-new img)
  216.  
  217.     (gimp-context-pop)
  218.   )
  219. )
  220.  
  221. (script-fu-register "script-fu-3dtruchet"
  222.   _"3_D Truchet..."
  223.   _"Create an image filled with a 3D Truchet pattern"
  224.   "Adrian Likins <aklikins@eos.ncsu.edu>"
  225.   "Adrian Likins"
  226.   "1997"
  227.   ""
  228.   SF-ADJUSTMENT _"Block size"        '(64 5 1000 1 10 0 1)
  229.   SF-ADJUSTMENT _"Thickness"         '(12 2 100 1 10 0 1)
  230.   SF-COLOR      _"Background color"  "white"
  231.   SF-COLOR      _"Start blend"       "black"
  232.   SF-COLOR      _"End blend"         "white"
  233.   SF-TOGGLE     _"Supersample"       TRUE
  234.   SF-ADJUSTMENT _"Number of X tiles" '(5 1 1000 1 10 0 1)
  235.   SF-ADJUSTMENT _"Number of Y tiles" '(5 1 1000 1 10 0 1)
  236. )
  237.  
  238. (script-fu-menu-register "script-fu-3dtruchet"
  239.                          "<Image>/File/Create/Patterns")
  240.